package com.zhou.demo.controller;

import com.zhou.demo.enums.DelayQueueEnum;
import com.zhou.demo.utils.RedisDelayQueueUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;

/**
 * @author zhouquan
 */
@Slf4j
@Validated
@RestController
public class DeliveryController {

    @Resource
    private RedisDelayQueueUtil redisDelayQueueUtil;

    /**
     * 创建订单
     * 创建订单后，添加订单支付超时队列
     */
    @GetMapping("/createOrder")
    public void createOrder() {
        Long orderId = 1L;

        // todo 创建订单
        log.info("已经创建订单，等待支付...");

        // 添加应助超时，解除锁定延迟队列。为了测试效果，延迟5秒钟
        redisDelayQueueUtil.addDelayQueue(DelayQueueEnum.ORDER_PAYMENT_TIMEOUT.getCode(), orderId, 5, TimeUnit.SECONDS);
    }

    /**
     * 评价超时
     * 已收货后，添加评价超时队列
     */
    @GetMapping("/delivered")
    public void delivered() {
        Long orderId = 1L;

        // todo  已经收到货之后的操作
        log.info("已收货,等待评价...");

        // 添加评价超时队列，为了测试效果，延迟10秒钟
        redisDelayQueueUtil.addDelayQueue(DelayQueueEnum.EVALUATION_TIMEOUT.getCode(), orderId, 10, TimeUnit.SECONDS);
    }

}
